In data processing systems having a plurality of processors, also known as a multi-processor data processing system, there can be two different types of servers—non-partitioned servers and partitioned servers.
A non-partitioned server is one that has a single operating system (OS) instance running on the server, with multiple threads running within that OS instance (e.g. one thread per processor).
A logically partitioned server is one where a hypervisor manages multiple partitions, with one OS instance running in each partition, where each partition has allocated resources such as processor(s) (a single processor, multiple processors, or a portion of a processor), memory and input/output (I/O) adapters. Logically partitioned servers typically have a partition management tool function. The partition management tool can be used to configure the number of partitions on the server, the OS type to run in each partition, the processor and memory resources assigned to each partition, and each I/O adapter assigned to a partition. For example, the partition management tool can run in an external PC, rack-mounted PC, server service processor, in a partition on the server, or managed across a network by a PC or server.
One type of bus used to connect I/O devices to a data processing system is known as a Peripheral Computer Interface (PCI) bus, where I/O devices typically connect to an I/O adapter connected to an internal PCI bus within a data processing system. PCI bus speeds continue to increase in their speed of transferring data and control signals to/from I/O devices and processors within the data processing system. In addition, storage devices are operating at faster speeds and the number of processors used in a multi-processor data processing system is also increasing. However, existing I/O adapters such as SCSI or fibre channel adapters are not designed to fully take advantage of servers having multiple processors. For example, they are not designed to allow different processors to efficiently read and write to different SCSI storage devices or fibre channel zoned storage data under a single adapter such as a SCSI or fibre channel adapter.
SCSI adapters are used to couple SCSI-compliant storage devices to a PCI bus for access by processors within the data processing system. SCSI storage devices include individual hard disks, mirrored hard disk pairs, RAID arrays formed by logically grouping multiple hard disks into a RAID array, tape, and optical devices.
Similarly, fibre channel adapters are used to couple fibre channel network attached storage data to a PCI bus for access by processors within the data processing system. Fibre channel adapters are used to access storage data through a fibre channel network, for example, switches, routers, and hubs. Fibre channel storage subsystem data is typically zoned, where each zone can be accessed by one or more entities across the fibre channel network. Each zone typically has a list of World Wide Port Names associated with the zone (World Wide Port Names apply to server ports accessing storage data and to ports in the fibre channel storage subsystem). Fibre channel storage data is typically stored on hard disks in a fibre channel storage subsystem.
Today's multi-processor data processing system servers have bottlenecks that can significantly degrade throughput from what the adapter and storage devices are capable of, add undesired latencies, and increase CPU utilization required to allow sharing of an adapter. Part of this problem can be attributable to the fact that existing internal I/O storage adapters effectively have a single queue for the server processors to use.
In a non-partitioned multi-processor server, the processors (executing threads doing reads and writes) are not efficient/responsive to sending commands and processing responses. For example, a single interrupt indicates good path responses, even though different processors issued commands.
In a logically partitioned server, a hosting partition may own a storage adapter and allow one or more hosted partitions to access storage data through the hosting partition. The hosting partition is involved in all reads and writes, increasing overall server processor utilization and latencies, as the single queue and adapter interrupts are solely managed by the hosting partition.
There is thus a need to provide an improved multi-processor data processing system including enhanced I/O storage adapters with capabilities for efficiently sharing I/O adapters and devices between processors of a multi-processor data processing system.